﻿using System;

using System.Collections.Generic;
using System.Text;
using Silvermoon.Visuals;

namespace Silvermoon.Controls
{
    /// <summary>
    /// Decorates a control to contain visuals.
    /// </summary>
    /// <remarks>
    /// Since Control is decorated with this interface, all control have this interface by default.
    /// </remarks>
    public interface IVisualControl
    {
        /// <summary>
        /// Gets all visuals for rendering. Note that all <see cref="Visual"/>s at this list get also disposed when this control is disposed.
        /// </summary>
        IEnumerable<Visual> Visuals { get; }

        void Invalidate(InvalidationFlag flags);

        /// <summary>
        /// Gets whether a control is invalidated.
        /// </summary>
        bool Invalidated { get; }

        int Alpha { get; set; }

        IEnumerable<Transformation> Transformations { get; set; }


    }
}
